<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>预定义常量</title>
<link media="all" rel="stylesheet" type="text/css" href="styles/03e73060321a0a848018724a6c83de7f-theme-base.css" />
<link media="all" rel="stylesheet" type="text/css" href="styles/03e73060321a0a848018724a6c83de7f-theme-medium.css" />

 </head>
 <body class="docs"><div class="navbar navbar-fixed-top">
  <div class="navbar-inner clearfix">
    <ul class="nav" style="width: 100%">
      <li style="float: left;"><a href="mcrypt.resources.html">« 资源类型</a></li>
      <li style="float: right;"><a href="mcrypt.ciphers.html">Mcrypt 密码 »</a></li>
    </ul>
  </div>
</div>
<div id="breadcrumbs" class="clearfix">
  <ul class="breadcrumbs-container">
    <li><a href="index.html">PHP Manual</a></li>
    <li><a href="book.mcrypt.html">Mcrypt</a></li>
    <li>预定义常量</li>
  </ul>
</div>
<div id="layout">
  <div id="layout-content"><div id="mcrypt.constants" class="appendix">
 <h1>预定义常量</h1>

 <p class="simpara">下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。</p>
 <p class="para">
  Mcrypt 支持以下四种分组密码模式：<code class="literal">CBC</code>，
  <code class="literal">OFB</code>，<code class="literal">CFB</code> 和
  <code class="literal">ECB</code>。
  如果使用 libmcrypt-2.4.x 或更高版本链接，
  还可以支持 <code class="literal">nOFB</code> 分组模式
  和 <code class="literal">STREAM</code> 模式。
  下列是所支持的加密模式以及其对应的预定义常量。
  完整的参考见：Applied Cryptography by Schneier (ISBN 0-471-11709-9)。
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     <strong><code>MCRYPT_MODE_ECB</code></strong> (<code class="literal">electronic
     codebook</code>) 是一种分组加密模式，但是它无法适用于大部分场景，
     所以不建议使用这种模式进行分组加密。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <strong><code>MCRYPT_MODE_CBC</code></strong> (<code class="literal">cipher block
     chaining</code>) 也是一种分组加密方式，
     相对 <code class="literal">ECB</code> 模式，它更加安全。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <strong><code>MCRYPT_MODE_CFB</code></strong> (<code class="literal">8 比特模式的 cipher
     feedback</code>) 是一种流式加密模式。
     相对于 <code class="literal">CFB</code> 而言，
     推荐使用 <code class="literal">NCFB</code> 模式。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <strong><code>MCRYPT_MODE_OFB</code></strong> (<code class="literal">output feedback, in
     8bit</code>) 和 <code class="literal">CFB</code> 类似，
     也是一种流式加密模式，它可以用在无法容忍加密错误传播的应用中。
     推荐使用 <code class="literal">NOFB</code> 模式，而不是 <code class="literal">OFB</code> 模式。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <strong><code>MCRYPT_MODE_NOFB</code></strong> (<code class="literal">output feedback,
     in nbit</code>) 和 <code class="literal">OFB</code> 类似，但是更加安全，
     因为它可以按照算法指定的分组大小来对数据进行加密。
    </span>
   </li> 
   <li class="listitem">
    <span class="simpara">
     <strong><code>MCRYPT_MODE_STREAM</code></strong> 是一种扩展模式，
     它包含了诸如 <code class="literal">&quot;WAKE&quot;</code> 或 <code class="literal">&quot;RC4&quot;</code> 的流加密算法。
    </span>
   </li> 
  </ul>
 </p>

 <p class="para">
  Mcrypt 还支持一些尚未预定义常量的加密模式。
  可以通过传入一个字符串来使用使用未预定义常量的加密模式。
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     <strong><code>&quot;ctr&quot;</code></strong> (<code class="literal">counter mode</code>) 是一种流式加密模式。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <strong><code>&quot;ncfb&quot;</code></strong> (<code class="literal">cipher feedback,
     in n-bit mode</code>)，类似于 <code class="literal">CFB</code> 模式，
     但是它会对于算法设定的整块数据进行操作。
    </span>
   </li>
  </ul>
 </p>
 
 <p class="para">
  其他模式以及随机设备常量：
  <dl>
   
    <dt id="constant.mcrypt-encrypt">
     <strong><code>MCRYPT_ENCRYPT</code></strong> 
     (<span class="type">int</span>)
    </dt>

    <dd>

     <span class="simpara">
      
     </span>
    </dd>

   
   
    <dt id="constant.mcrypt-decrypt">
     <strong><code>MCRYPT_DECRYPT</code></strong> 
     (<span class="type">int</span>)
    </dt>

    <dd>

     <span class="simpara">
      
     </span>
    </dd>

   
   
    <dt id="constant.mcrypt-dev-random">
     <strong><code>MCRYPT_DEV_RANDOM</code></strong> 
     (<span class="type">int</span>)
    </dt>

    <dd>

     <span class="simpara">
      
     </span>
    </dd>

   
   
    <dt id="constant.mcrypt-dev-urandom">
     <strong><code>MCRYPT_DEV_URANDOM</code></strong> 
     (<span class="type">int</span>)
    </dt>

    <dd>

     <span class="simpara">
      
     </span>
    </dd>

   
   
    <dt id="constant.mcrypt-rand">
     <strong><code>MCRYPT_RAND</code></strong> 
     (<span class="type">int</span>)
    </dt>

    <dd>

     <span class="simpara">
      
     </span>
    </dd>

   
  </dl>

 </p>
</div>
</div></div></body></html>